A L T A I R¶



Импорт датасета¶


In [1]:
import pandas as pd
df = pd.read_csv('data/superstore.csv', sep=';', index_col='Row ID')
df['Order Date'] = pd.to_datetime(df['Order Date'], dayfirst=True)
df['Ship Date'] = pd.to_datetime(df['Ship Date'], dayfirst=True)
df[:1]
Out[1]:
Order ID Order Date Order Priority Order Quantity Sales Discount Ship Mode Profit Unit Price Shipping Cost Customer Name Province Region Customer Segment Product Category Product Sub-Category Product Name Product Container Ship Date
Row ID
1 3 2010-10-13 Low 6 261.54 0.04 Regular Air -213.25 38.94 35.0 Muhammed MacIntyre Nunavut Nunavut Small Business Office Supplies Storage & Organization Eldon Base for stackable storage shelf, platinum Large Box 2010-10-20

Импорт библиотеки¶


In [2]:
import altair as alt

Тема заднего фона¶

https://observablehq.com/@vega/vega-themes-demo


In [3]:
alt.themes.enable('powerbi')
Out[3]:
ThemeRegistry.enable('powerbi')

Снятие ограничений на большие датасеты¶

In [4]:
alt.data_transformers.disable_max_rows()
Out[4]:
DataTransformerRegistry.enable('default')

Интерактивный выбор элементов¶

  • bind= : где производить выбор ( в поле легенды или на графике )

In [5]:
selection = alt.selection_point(fields=['Customer Segment'],bind='legend')

Точечный график¶

  • mark_point() : тип графика (точечный)
  • add_params() : добавление дополнительных параметров к графику ( интерактивный выбор элементов )
  • encode() : добавление данных
    • opacity= : прозрачность
      • alt.condition() : Условная кострукция if-else
  • interactive() : интеракивный масштаб
  • properties() : добавление праметров к заднему фону

In [6]:
chart = alt.Chart(df,width=500, height=500)\
    .mark_point(size=40)\
        .add_params(selection)\
            .encode(x='Sales', y='Profit', color='Customer Segment', opacity=alt.condition(selection, alt.value(1), alt.value(0.05)))\
                .interactive()\
                    .properties(title='Точечный график');
chart
Out[6]:

Столбчатая диаграмма¶

  • mark_bar() : тип графика (столбчатая диаграмма)
  • encode() : добавление данных
    • day() : выбор дней недели из datetime
    • mean() : аггрегатная функция к данным
    • alt.Y() : создание оси Y для редактирования
      • alt.Axis() : доступ к парметрам осей

In [7]:
selection = alt.selection_point(fields=['Customer Segment'],bind='scales')

chart = alt.Chart(df,width=500, height=500,)\
    .mark_bar()\
        .add_params(selection)\
            .encode(x='day(Order Date):O', y=alt.Y('mean(Sales)',axis=alt.Axis(grid=False)), color='Customer Segment', opacity=alt.condition(selection, alt.value(1), alt.value(0.1)))\
                .interactive()\
                    .properties(title='Great Altair barplot');
chart
Out[7]: